from django.shortcuts import render
from django.http import HttpResponseRedirect
from index.models import *

# Create your views here.


# 用户的登录逻辑处理
def login_view(request):   # GET OR POST
    # 处理GET请求
    if request.method == 'GET':
        # 1、首先检查session, 判断用户是否第一次登录, 如果不是, 则直接重定向到首页
        # if 'username' in request.session:    # request.session 类字典对象
        #     return HttpResponseRedirect('/index/allbook')
        # # 2、然后检查cookie, 是否保存了用户登录信息
        # if 'username' in request.COOKIES:
        #     # 若存在则赋值返回session, 并重定向到首页
        #     request.session['username'] = request.COOKIES['username']
        #     return HttpResponseRedirect('index/allbook')
        # 不存在则重定向登录页, 让用户登录
        return render(request, 'user/login.html')
    # 处理POST请求
    elif request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        # 使用hashlib中的MD5加密
        # m = hashlib.md5()
        # m.update(password.encode())
        # password_m = m.hexdigest()
        # 判断输入是否其中一项为空或者格式不正确
        if not username or not password:
            error = '你输入的用户名或者密码错误！'
            return render(request, 'user/login.html', locals())
        # 若输入没有问题则进入数据比对阶段， 看看已经注册的用户中是否存在该用户
        users = UserInfo.objects.filter(username=username, password=password)
        # 由于使用了filter, 所以返回值user是一个数组, 但是也要考虑其为空的状态, 即没有查到该用户
        if not users:
            error = '用户不存在或用户密码输入错误!!'
            return render(request, 'user/login.html', locals())
        # 返回值是个数组, 并且用户名具备唯一索引, 当前用户是该数组中第一个元素
        users = users[0]
        # 设置session
        request.session['username'] = username
        response = HttpResponseRedirect('/index/allbook/')
        # 检查post 提交的所有键中是否存在 isSaved 键
        if 'isSaved' in request.POST.keys():
            # 若存在则说明用户选择了记住用户名功能, 执行以下语句设置cookie的过期时间
            response.set_cookie('username', username, 60*60*24*7)
        return response
